// 权限控制
import store from '@/store'
import router from '@/router'

// 路由守卫全局进度条
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
router.beforeEach((to, from, next) => {
  NProgress.start() // 开启 进度条
  // 白名单
  const whiteList = ['/login', '/404']
  // 判断是否有token
  const token = store.state.user.token
  if (token) {
    if (to.path === '/login') {
      next('/')
      NProgress.done() // 结束 进度条
    } else {
      // 在这里 拿到 vuex中的用户信息  请求action中的方法
      // 进入页面之前，获取用户信息
      // 判断vuex中是否有 userInfo数据 如果有 就不用调用 如果没有才调用
      if (!store.state.user.userInfo.userId) {
        store.dispatch('user/fetchUserInfo')
      }

      next()
    }
  } else {
    // 判断是否在白名单里面
    if (whiteList.includes(to.path)) {
      // includes 字符串方法 是否包含 包含就为true 否则为false
      next()
    } else {
      next('/login')
      NProgress.done() // 结束 进度条
    }
  }
})

// 后置路由守卫
router.afterEach((to, from) => {
  NProgress.done() // 结束 进度条
})
